package com.xdcplus.web.service.tool;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.tool.ToolGroupDTO;
import com.xdcplus.web.common.pojo.dto.tool.ToolGroupFilterDTO;
import com.xdcplus.web.common.pojo.entity.tool.ToolGroup;
import com.xdcplus.web.common.pojo.vo.tool.ToolGroupVO;

import java.util.List;


/**
 * 1-设备对应群组信息(ToolGroup)表服务接口层
 *
 * @author Bullion.Yan
 * @since 2023-02-14 16:26:25
 */
public interface ToolGroupService extends BaseService<ToolGroup, ToolGroup, ToolGroupVO> {

    /**
     * 添加1-设备对应群组信息(ToolGroup)
     *
     * @param toolGroupDTO 1-设备对应群组信息(ToolGroupDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveToolGroup(ToolGroupDTO toolGroupDTO);

    /**
     * 修改1-设备对应群组信息(ToolGroup)
     *
     * @param toolGroupDTO 1-设备对应群组信息(ToolGroupDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateToolGroup(ToolGroupDTO toolGroupDTO);

    /**
     * 批量保存或更新1-设备对应群组信息(ToolGroup)
     *
     * @param toolGroupList 1-设备对应群组信息(ToolGroupList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<ToolGroup> toolGroupList);

    /**
     * 批量保存或更新1-设备对应群组信息(ToolGroupDTOList)
     *
     * @param toolGroupDTOList 1-设备对应群组信息(ToolGroupDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<ToolGroupDTO> toolGroupDTOList);

    /**
     * 删除1-设备对应群组信息(ToolGroup)
     *
     * @param id 1-设备对应群组信息(ToolGroup)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteToolGroupLogical(Long id);
    
    Boolean deleteToolGroupByIds(String ids);

    /**
     * 查询1-设备对应群组信息(ToolGroup)
     *
     * @param toolGroupFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolGroupVO>} 状态信息
     */
    List<ToolGroupVO> queryToolGroupVOList(ToolGroupFilterDTO toolGroupFilterDTO);

    /**
     * 查询1-设备对应群组信息(ToolGroup)
     *
     * @param toolGroupFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolGroupVO>} 状态信息
     */
    PageVO<ToolGroupVO> queryToolGroup(ToolGroupFilterDTO toolGroupFilterDTO);

    /**
     * 查询一个
     *
     * @param id 1-设备对应群组信息(ToolGroup)主键
     * @return {@link ToolGroupVO} 1-设备对应群组信息(ToolGroup)信息
     */
    ToolGroupVO queryToolGroupById(Long id);

    ToolGroupVO queryToolGroupByGroupCode(String groupCode);
}
